﻿using Sharp7;

namespace Zhy.Sharp7Demo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");

            TestSharp7();

            Console.WriteLine("程序执行完成，按任意键退出...");
            Console.ReadKey();
        }

        /// <summary>
        /// 测试Sharp7第三方库的读写功能
        /// </summary>
        static void TestSharp7()
        {
            // 创建Sharp7帮助类实例
            using (var plc = new Sharp7Helper())
            {
                try
                {
                    // 连接到PLC
                    if (plc.Connect("192.168.0.1", 0, 1))
                    {
                        Console.WriteLine("成功连接到PLC");

                        // 示例1：读取DB1.DBX0.0的布尔值
                        bool status = plc.ReadBool(1, 0, 0);
                        Console.WriteLine($"DB1.DBX0.0状态: {status}");

                        // 示例2：写入DB1.DBX0.1的布尔值
                        plc.WriteBool(1, 0, 1, true);

                        // 示例3：读取DB2.DBW10的整数值
                        short temperature = plc.ReadInt(2, 10);
                        Console.WriteLine($"温度值: {temperature}");

                        // 示例4：写入DB2.DBD12的浮点数值
                        plc.WriteReal(2, 12, 25.5f);

                        // 示例5：读取DB3中的字符串
                        string productName = plc.ReadString(3, 0, 20);
                        Console.WriteLine($"产品名称: {productName}");
                    }
                    else
                    {
                        Console.WriteLine("连接PLC失败");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"操作异常: {ex.Message}");
                }
            }
        }
    }
}
